package com.aabte.design2.structural.bridge;

import lombok.Data;

/**
 * “抽象部分”定义了两个类层次结构中“控制”部分的接口。它管理着一个指向“实
 * 现部分”层次结构中对象的引用，并会将所有真实工作委派给该对象。
 *
 * @author Daniel
 * @version 1.0
 * @date 2020/5/3
 */
@Data
public class GeneralRemoteControl implements RemoteControl {

    private Device device;

    public GeneralRemoteControl(Device device) {
        this.device = device;
    }

    @Override
    public void togglePower() {
        if (device.isEnable()) {
            device.disable();
        } else {
            device.enable();
        }
    }

    @Override
    public void volumeDown() {
        device.setVolume(device.getVolume() - 10);
    }

    @Override
    public void volumeUp() {
        device.setVolume(device.getVolume() + 10);
    }


    @Override
    public void channelDown() {
        device.setChannel(device.getChannel() - 1);
    }

    @Override
    public void channelUp() {
        device.setChannel(device.getChannel() + 1);
    }
}
